Pro Entity Framework Core 2 for ASP.NET Core MVC 翻译

第 1 章 Entity Framework Core 来龙去脉

作者:Adam Freeman
翻译:陈广
日期:2018-11-13


Entity Framework Core 来龙去脉

Entity Framework Core —— 又称 EF Core —— 是微软出品的对象关系映射(ORM)开发包,它使得 .NET Core 应用程序可以在关系型数据库中存储数据。

理解 Entity Framework Core

Entity Framework Core有一个关键任务:在数据库存储 .NET 对象,之后再取回它们。换句话说,Entity Framework Core 是 ASP.NET Core MVC 应用程序和数据库之间的桥梁,如图1-1所示。

图1-1 Entity Framework Core 来龙去脉

在数据库中存储 .NET 对象可能是一个惊人的复杂过程。数据库不是孤立存在的。它们是由数据库服务器创建和管理的,它们是用于数据存储和管理的专用程序。数据库服务器为大多数应用程序提供持久存储,而最受欢迎的数据库服务器几十年来一直在开发中,从而成为个有强大功能的高性能和健壮的软件。数据库服务器支持一组核心的公共功能,但它们与自定义添加的功能不同,要从数据库服务器获得最佳结果就需要利用它们。

数据库服务器有不同类型,Entity Framework Core 使用的类型称为关系数据库服务器,也称为关系数据库管理系统(RDBMS)。关系数据库服务器管理关系数据库,其中数据作为行存储在表中,与电子表格没什么不同。关系数据库服务器通常接受以结构化查询语言(SQL)表示的命令表达式,从而实现数据操作 —— 如存储或删除数据。这里有一个SQL语言标准,但各数据库服务器使用的方言略有不同,特别是在访问非标准功能时。

注意:我说的如此简单只是为了不浪费时间。这世界上的充斥着各种不同类型的数据、不同类型的数据库以及数据库服务器,但这与使用ASP.NET Core MVC 或 Entity Framework Core没有多大关系。

为了将 .NET 对象存储在数据库中,Entity Framework Core 必须能够将对象转换成可以存储在数据库表中的形式,并制定数据库服务器可以处理的 SQL 命令。为了处理数据库服务器之间的差异,Entity Framework Core 依赖于 database provider,它负责与数据库进行通信和编写SQL命令。

要从数据库中检索 .NET 对象,Entity Framework Core必须能够逆转这个过程。它必须能够创建一个SQL查询,以向数据库服务器请求表示对象的数据值,然后使用它们填充 .NET 对象的属性。为了使这个过程尽可能自然,Entity Framework Core支持使用 LINQ 查询数据库,它使得处理存储在数据库中的对象集合类似于处理内存中的对象集合。

关于本书

在本书中,我将解释如何在 ASP.NET Core MVC 应用程序中使用 Entity Framework Core。我向您展示了将Entity Framework Core 添加到项目中的不同方法,以及粗心的人容易犯的错误。Entity Framework Core 是一个强大的工具,但是注意细节非常重要;否则,您得到的将是一个性能不佳或行为达不到预期的应用程序。

你需要知道什么

为从本书中得到最大的收获,你应该已经熟悉了ASP.NET Core MVC开发。如果你还不知道 Controller(控制器)和 Action(动作)或者 Razor 视图是如何工作的,那将变得非常困难。如果你还不熟悉ASP.NET Core MVC,那么请参考 Apress 出版的https://docs.microsoft.com/en-us/aspnet/core或我的书《Pro ASP.NET Core MVC 2》。

你需要什么软件

为了遵循本书中的示例,您将需要一个运行 Windows、NET Core SDK和最新版本Visual Studio的电脑。除Windows 之外,我在这本书中使用的所有工具都是免费的,我将在第2章中解释如何搭建您的开发环境。

如果不想使用 Windows 该怎么做

本书一直依赖于 Windows 和 Visual studio,因为这是大多数读者所使用的,并且能够使用 LocalDB —— 仅限于Wincows下的SQL Server开发人员版本 —— 使示例更可预测及可靠。只要稍加努力,您就可以在.NET Core支持的任何平台上运行本书中的所有示例,尽管您需要安装完整的 SQL Server(或使用docker容器)。如果您想使用 Linux 或 macOS,请通过 adam@adam-freeman.com 与我联系,我将尽力帮助您入门。

本书结构

这本书分为三个部分,每一部分都涉及一套相关的主题。

第一部分:介绍 Introducing Entity Framework Core 2

学习的最佳途径是动手,本书的这一部分中,您可以更高的视角去了解Entity Framework Core是如何工作的,以及它如何与ASP.NET Core MVC集成。在第2章中,您将创建第一个使用Entity Framework Core存储数据的ASP.NET Core MVC 应用程序。在第3章中,我为使用在数据库中使用 SQL 提供了一个入门,它可以帮助您理解Entity Framework Core是如何工作的。第4-10章讲述了一个体育商店的项目的开发,通过该项目,我向您展示了一个实际的开发过程,触及了最重要的Entity Framework Core功能,并在书中对它们的每一个细节作详细描述。

第二部分:Entity Framework Core 2 详细描述

在第2部分中将描述您会在ASP.NET Core MVC项目中日常使用的Entity Framework Core的核心功能。我将向您展示每个功能是如何工作的,解释它所扮演的角色,并描述可供选择的技术。

第三部分:高级 Entity Framework Core 2

在3部分中,我描述了Entity Framework Core所提供的高级功能。这些都是你不需要经常使用,但当默认的Entity Framework Core行为无法解决你的问题时,它将是无价的。

在哪里获取示例代码

您可以在 https://github.com/apress/pro-ef-core-2-for-asp.net-core-mvc 上下载本书所有章节的示例项目。下载是免费的,并包含所有类、视图和示例所需的其他东西,而不必输入所有代码。

获取本书勘误

您可以在 https://github.com/apress/pro-ef-core-2-for-asp.net-core-mvc 中获取本书勘误表。

如何联系我?

如果在使用各章节示例时有任何问题,或发现了本书的问题,请发电子邮件联系我:adam@adam-freeman.com。我会尽我所能帮助您。在联系我之前,请检查本书勘误表查看里面是否已包含有关你的问题的解决方案。

总结

本节,我介绍了 Entity Framework Core 并解释了它所扮演的角色以及描述了本书的结构和内容。在下一章,您将看到 ASP.NET Core MVC 和 Entity Framework Core 这两个强大的工具是如何在一个简单示例中协同工作的。

;

© 2018 - IOT小分队文章发布系统 v0.3